// 导入 invokeEmpyreanRequest 模块
import invokeEmpyreanRequest from '@/services/invokeEmpyreanRequest.js';
import Crypto from '@/ControlTower/crypto.js'
import Vue from 'vue';
// 导入 app.config.js 中的变量
import {
	basePrefix,
	paymentPrefix
} from '../../../app.config.js';

// 创建 invokeEmpyreanRequest 实例，传入配置参数
const request = new invokeEmpyreanRequest({
	baseURLs: {
		base: basePrefix, // 设置基本 URL
		payment: paymentPrefix // 设置支付 URL
	},
	defaultData: {
		// 绑定token
		token: () => Vue.prototype.$storage.get('token')
	},
	defaultBaseURL: basePrefix, // 设置默认基本 URL
	timeout: 10000 * 60, // 设置超时超时时间为 10 分钟 
	vues: () => Vue.prototype
});
request.addRequestInterceptor((options) => {
	// 显示 loading
	if (!["/bill/permissions/hasPermission", "/bill/details/listImg", "/bill/details/create",
			"/bill/details/pay", "/bill/details/remove", "/bill/details/update"
		].includes(options.url)) {
		uni.showLoading({
			title: '加载中...',
			mask: true
		});
	}
	// 在请求发起前的处理逻辑
	// 比如添加 ldoading 效果，设置请求头，修改请求参数等
	return options;
});
request.addResponseInterceptor((response) => {
	// 隐藏 loading
	uni.hideLoading();
	const data = Vue.prototype.decrypt(response.data, '解密', true);
	if (data.code === 200) {
		return data
	} else {
		throw data;
	}
	// 在响应返回后的处理逻辑
	// 比如根据响应状态码进行特定处理，处理返回数据等
});
// 导出 request 对象作为默认导出
export default request;